ServiceSample.cs [C#]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WpfApplication1.ServiceReference1;
using System.Security.Cryptography;
using System.IO;
using System.ServiceModel;
namespace WpfApplication1
{
public class ServiceSample
{
ManagerServiceClient client;
public ServiceSample()
{
EndpointAddress address = new EndpointAddress(GlobalParam.SERVICE_URL);
BasicHttpBinding binding;
if (GlobalParam.SERVICE_URL.Contains("https:/"))
binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
else binding = new BasicHttpBinding();
binding.MaxBufferSize = 2147483647;
binding.MaxReceivedMessageSize = 2147483647;
client = new ManagerServiceClient(binding, address);
}
View_Manager manager;
string sessionId;
public ErrorType GetGroup(out List<View_Group> listResult, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Group>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetGroup(out listResult, manager.BoxId ?? 0, manager.Id, sessionId);
}
return result;
}
public ErrorType GetGroupByName(out List<View_Group> filteredList, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Group>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Group> listResult;
result = client.GetGroup(out listResult, manager.BoxId ?? 0, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetPlayerProfile(out List<PlayerProfil> listResult, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<PlayerProfil>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
bool onlyThisBox = true;
result = client.GetPlayerProfil(out listResult, manager.Id, sessionId, onlyThisBox);
}
return result;
}
public ErrorType GetPlayerProfileByName(out List<PlayerProfil> filteredList, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<PlayerProfil>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<PlayerProfil> listResult;
bool onlyThisBox = true;
result = client.GetPlayerProfil(out listResult, manager.Id, sessionId, onlyThisBox);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetPlayer(out List<View_Player> listResult, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Player>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetPlayer(out listResult, manager.BoxId ?? 0, manager.Id, sessionId);
}
return result;
}
public ErrorType GetPlayerByName(out List<View_Player> filteredList, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Player>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Player> listResult;
result = client.GetPlayer(out listResult, manager.BoxId ?? 0, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetPlayerByFilter(out List<View_Player> filteredList, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Player>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetFilteredPlayer(out filteredList, filter, manager.Id, sessionId);
}
return result;
}
public ErrorType GetMonitoring(out List<View_StatusM> listResult, out long serverDate, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_StatusM>();
serverDate = 0;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId2(out sessionId, out manager, out serverDate, login, password))
{
long lastMonitoring = 0;
result = client.GetPlayerStatus(out listResult, ref lastMonitoring, manager.Id, sessionId);
}
return result;
}
public ErrorType GetMonitoringByName(out List<View_StatusM> filteredList, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_StatusM>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_StatusM> listResult;
long lastMonitoring = 0;
result = client.GetPlayerStatus(out listResult, ref lastMonitoring, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.PlayerName.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType SendUpdate(List<long> listPLayerId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
Dictionary<long, long> donloadSize;
result = client.SetPlayerStatus(out donloadSize, listPLayerId, 1, 1, 0, 0, manager.Id, sessionId);
}
return result;
}
public ErrorType GetFolder(out List<View_Folder> listResult, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Folder>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetFolder(out listResult, groupId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetFolderByName(out List<View_Folder> filteredList, long groupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Folder>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Folder> listResult;
result = client.GetFolder(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetMedia(out List<View_Media> listResult, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Media>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetMedia(out listResult, groupId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetMediaByName(out List<View_Media> filteredList, long groupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Media>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Media> listResult;
result = client.GetMedia(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType UploadMedia(out View_Media media, string safeFileName, long groupId, bool isFirst, bool isLast, byte[] buffer, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
media = null;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.UploadMedia(out media, safeFileName, groupId, isFirst, isLast, buffer, manager.Id, sessionId);
}
return result;
}
public ErrorType UpdateMedia(ref View_Media media, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.UpdateMedia(ref media, media.GroupId ?? 0, null, manager.Id, sessionId);
}
return result;
}
public ErrorType GetTrigger(out List<View_Media> filteredList, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Media>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Media> listResult;
result = client.GetMedia(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.FolderId < 0 select l1).ToList();
}
}
return result;
}
public ErrorType GetTriggerByName(out List<View_Media> filteredList, long groupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Media>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Media> listResult;
result = client.GetMedia(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.FolderId < 0 && l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetTemplate(out List<View_Template> listResult, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Template>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetTemplate(out listResult, groupId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetTemplateByName(out List<View_Template> filteredList, long groupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Template>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Template> listResult;
result = client.GetTemplate(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetTicker(out List<View_Banner> listResult, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Banner>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetBanner(out listResult, groupId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetTickerByName(out List<View_Banner> filteredList, long groupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Banner>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Banner> listResult;
result = client.GetBanner(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType UpdateTicker(ref View_Banner ticker, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.UpdateBanner(ref ticker, ticker.GroupId ?? 0, null, manager.Id, sessionId);
}
return result;
}
public ErrorType GetPlaylist(out List<View_Playlist> listResult, List<long> listGroupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_Playlist>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetPlaylist(out listResult, listGroupId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetPlaylistByName(out List<View_Playlist> filteredList, List<long> listGroupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<View_Playlist>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<View_Playlist> listResult;
result = client.GetPlaylist(out listResult, listGroupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetPlaylistMedia(out List<View_PlaylistComponent> listResult, long groupId, long playlistId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<View_PlaylistComponent>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
string filter = "";
result = client.GetPlaylistComponent(out listResult, playlistId, groupId, manager.Id, sessionId, filter);
}
return result;
}
public ErrorType AddPlaylistMedia(ref View_PlaylistComponent component, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.AddPlaylistComponent(ref component, groupId, null, manager.Id, sessionId);
}
return result;
}
public ErrorType GetXMLMedia(out List<XMLMedia> listResult, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<XMLMedia>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetXMLMedia(out listResult, groupId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetXMLMediaByName(out List<XMLMedia> filteredList, long groupId, string filter, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
filteredList = new List<XMLMedia>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
List<XMLMedia> listResult;
result = client.GetXMLMedia(out listResult, groupId, manager.Id, sessionId);
if (result == ErrorType.GOOD)
{
filteredList = (from l1 in listResult where l1.Name.Contains(filter) select l1).ToList();
}
}
return result;
}
public ErrorType GetXMLMediaTitle(out List<XMLMediaTitle> listResult, long xmlMediaId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<XMLMediaTitle>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetXMLMediaTitle(out listResult, xmlMediaId, manager.Id, sessionId);
}
return result;
}
public ErrorType GetXMLMediaData(out List<XMLMediaData> listResult, long xmlMediaId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
listResult = new List<XMLMediaData>();
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.GetXMLMediaData(out listResult, xmlMediaId, manager.Id, sessionId);
}
return result;
}
public ErrorType SetXMLMediaData(List<XMLMediaData> listResult, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.SetXMLMediaData(ref listResult, manager.Id, sessionId);
}
return result;
}
private string GetSessionId(out string sessionId, out View_Manager manager, string login = "", string password = "")
{
string passswordEncrypt = GetPasswordEncrypt(password, GlobalParam.SERVER_KEY);
long serverDate;
ErrorType result = client.CheckLoginSDK(out sessionId, out manager, out serverDate, login, passswordEncrypt);
return GetErrorBySessionId(sessionId, manager, result);
}
private string GetSessionId2(out string sessionId, out View_Manager manager, out long serverDate, string login = "", string password = "")
{
string passswordEncrypt = GetPasswordEncrypt(password, GlobalParam.SERVER_KEY);
ErrorType result = client.CheckLoginSDK(out sessionId, out manager, out serverDate, login, passswordEncrypt);
return GetErrorBySessionId(sessionId, manager, result);
}
private static string GetErrorBySessionId(string sessionId, View_Manager manager, ErrorType result)
{
if (result == ErrorType.GOOD)
{
switch (sessionId)
{
case "0": return "Wrong login or password";
case "-1": return "Account Expired";
case "-2": return "Connection not allowed";
case "-3": return "Server error";
case "-4": return "Error, Please try again";
case "-5": return "Error, Please try again";
case "-6": return "Connection not allowed";
case "-7": return "Installation not completed";
}
if (manager != null)
{
return "ok";
}
}
else
{
switch (result)
{
case ErrorType.CONNECTION_ERROR: return "Connection error";
case ErrorType.DISCONNECTED: return "Manager disconnected";
case ErrorType.MANAGEREXIST: return "Can not create manager because this name as already used";
case ErrorType.NOT_POSSIBLE: return "This action is not possible";
case ErrorType.PLAYERINGROUP: return "Can not delete this group because one or more player have in this group";
}
}
return "General error";
}
public string GetPasswordEncrypt(string password, string serialNumber)
{
byte[] hash = GetHashKey(serialNumber);
string passwordEncrypt = Encrypt(hash, password);
return passwordEncrypt;
}
private byte[] GetHashKey(string hashKey)
{
UTF8Encoding encoder = new UTF8Encoding();
string salt = "fCycS3qSKsUlNz7wCb39XckN";
byte[] saltBytes = encoder.GetBytes(salt);
Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(hashKey, saltBytes);
return rfc.GetBytes(16);
}
private string Encrypt(byte[] key, string dataToEncrypt)
{
AesManaged encryptor = new AesManaged();
encryptor.Key = key;
encryptor.IV = key;
using (MemoryStream encryptionStream = new MemoryStream())
{
using (CryptoStream encrypt = new CryptoStream(encryptionStream, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
byte[] utfD1 = UTF8Encoding.UTF8.GetBytes(dataToEncrypt);
encrypt.Write(utfD1, 0, utfD1.Length);
encrypt.FlushFinalBlock();
encrypt.Close();
return Convert.ToBase64String(encryptionStream.ToArray());
}
}
}
public ErrorType DeleteMedia (View_Media media, long groupId, string login = "", string password = "")
{
ErrorType result = ErrorType.CONNECTION_ERROR;
if ((manager != null && sessionId != "" && login == "" && password == "")
|| "ok" == GetSessionId(out sessionId, out manager, login, password))
{
result = client.DeleteMedia(ref media, groupId, null, manager.Id, sessionId);
}
return result;
}
}
}